package com.demo.java.OD1_50.OD3;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 非严格递增连续数字序列
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145499128
 */
public class test1 {

    /**
     * 计算字符串中连续数字的最大长度
     * 其中数字可以是相同或递增的连续数字
     */
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            System.out.print("输入: ");
            // 读取输入行
            String lines = s.nextLine();
            char[] chars = lines.toCharArray();

            int startIndex = 0;  // 记录当前连续数字的起始位置
            int endIndex = 0;    // 记录当前连续数字的结束位置
            int maxValues = 0;   // 记录最大长度
            char tempChar = ' ';  // 临时存储当前处理的字符

            // 遍历字符串的每个字符
            for (int i = 0; i < chars.length; ++i) {
                char chValue = chars[i];

                // 判断是否是数字字符
                if (chValue >= '0' && chValue <= '9') {
                    // 如果是开始的数字，初始化起始位置和结束位置
                    if (startIndex == 0) {
                        startIndex = i;
                        endIndex = i;
                        tempChar = chValue;
                        continue;
                    }

                    // 判断当前字符是否与上一个字符相同或是递增的字符
                    if (chValue == tempChar || chValue == tempChar + 1) {
                        tempChar = chValue;
                        endIndex++;  // 更新结束位置
                    } else {
                        // 如果不符合条件，更新最大值，并重置起始、结束位置
                        maxValues = Math.max(maxValues, endIndex - startIndex + 1);
                        startIndex = 0;
                        endIndex = 0;
                        tempChar = ' ';
                    }
                } else {
                    // 如果当前字符不是数字，更新最大值，并重置位置
                    maxValues = Math.max(maxValues, endIndex - startIndex + 1);
                    startIndex = 0;
                    endIndex = 0;
                    tempChar = ' ';
                }
            }
            // 输出结果
            System.out.println("输出：" + maxValues);
        } catch (Exception e) {
            System.out.println("发生错误: " + e.getMessage());
        }
    }
}
